﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;



//题解思路，和前面的没有关系，看能不不能覆盖到后面的


//思路，第一次跳跃，不一定跳的最远，但是只要是在范围内的都可以作为下一次的起跳点
//所有第二次跳选最远的 
class Sol45
{
    public int Jump(int[] nums)
    {

        int end = 1;//记录最远的范围
        int start = 0;
        int count = 0;

        //while (end < nums.Length) {
        //    int farthestPos = 0;
        //    for (int i = start; i < end; i++) {

        //        farthestPos = Math.Max(farthestPos, i + nums[i]);

        //    }

        //    //更新范围
        //    start=end;
        //    end= farthestPos+1;
        //    count++;
        //}


        int farthestPos = 0;
        for (int i = 0; i < nums.Length; i++)
        {
            //下一次的起跳范围,最远的地方



            farthestPos = Math.Max(farthestPos, i + nums[i]);//

            if (i == end)
            {
                end = farthestPos;//更新终点
                count++;//走下一步
            }
            
           


        }

        return count;
    }




}

class Program45
{
    static void Main45(string[] args)
    {

        int[] nums = [2, 3, 1, 1, 4];

        Sol45 sol55 = new Sol45();
        int res = sol55.Jump(nums);
        Console.WriteLine(res);
    }
}
